package com.sistemagestion.productos.view;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterViewAnimator;
import android.widget.EditText;
import android.widget.ListView;

import com.sistemagestion.R;
import com.sistemagestion.BO.ProductoBO;
import com.sistemagestion.Entities.Producto;
import com.sistemagestion.Utils.Constantes;
import com.sistemagestion.Utils.Constantes.Operations;
import com.sistemagestion.clientes.view.ClienteEditActivity;

public class ProductoListado extends Activity{

	private static final int ACTIVITY_ALTA_PRODUCTO = 0;
	private static final int ACTIVITY_MODIFICAR_PRODUCTO = 1;
	private ProductoBO productoBO = new ProductoBO();
	List<Producto> _productos;
	ProductoAdapter adapter;
	Producto _producto;
	ListView lstProductos;
	EditText txtBuscar;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		setContentView(R.layout.lyt_listado_productos);
		InitVars();
		registerForContextMenu(lstProductos);
		lstProductos.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				
				
			}
		});
		
		txtBuscar = (EditText)findViewById(R.id.txtBuscar);
		txtBuscar.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence text, int arg1, int arg2, int arg3) {
				adapter.getFilter().filter(text);
			}
			
			@Override
			public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
					int arg3) {
				// TODO Auto-generated method stub
			}
			
			@Override
			public void afterTextChanged(Editable arg0) {
				// TODO Auto-generated method stub
			}
		});
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.mn_lstproducto, menu);
		return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.itmNuevo:
			Intent intent = new Intent(this, ProductoEditActivity.class);
			intent.putExtra("OPERATION", Constantes.Operations.ADD);
			startActivityForResult(intent, ACTIVITY_ALTA_PRODUCTO);
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
	}
	
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		MenuInflater inflater = getMenuInflater();
		menu.setHeaderTitle("Opciones");
		inflater.inflate(R.menu.ctx_mn_lstproducto, menu);
		super.onCreateContextMenu(menu, v, menuInfo);
	}
	@Override
	public boolean onContextItemSelected (MenuItem item) {
		AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
		int pos = info.position;
		Producto productoseleccionado = adapter.getItem(pos);
		switch (item.getItemId()) {
		case R.id.itmEditar:
			Intent intent = new Intent(this, ProductoEditActivity.class);
			intent.putExtra("OPERATION", Constantes.Operations.EDIT);
			intent.putExtra("PRODUCTO", productoseleccionado);
			startActivityForResult(intent, ACTIVITY_MODIFICAR_PRODUCTO);
			return true;
		case R.id.itmEliminar:
			productoBO.Eliminar(productoseleccionado);
			adapter.remove(productoseleccionado);
			return true;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}
	private void InitVars(){
		_productos = productoBO.getAll();
		adapter = new ProductoAdapter(this, R.layout.lyt_listado_productos_item, _productos);
		lstProductos = (ListView)findViewById(R.id.lstProductos);
		lstProductos.setAdapter(adapter);
	}
}
